﻿using System;
using System.Windows.Forms;
using System.Text;
using System.Net.Sockets;
using System.Threading;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Threading.Tasks;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using InfoFlash;

namespace InfoFlashClient
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }


  
 

        public void Connect(String server, string info)
        {
            try
            {


                // Create a TcpClient. 
                // Note, for this client to work you need to have a TcpServer  
                // connected to the same address as specified by the server, port 
                // combination.
                Int32 port = 13000;
                TcpClient client = new TcpClient(server, port);

                // Translate the passed message into ASCII and store it as a Byte array.
                //Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
                Byte[] data = MessageData.ToByteArray(info);


                // Get a client stream for reading and writing. 
                //  Stream stream = client.GetStream();

                NetworkStream stream = client.GetStream();

                // Send the message to the connected TcpServer. 
                stream.Write(data, 0, data.Length);
                

                Console.WriteLine("Sent: {0}", info.Message);

                // Receive the TcpServer.response. 

                // Buffer to store the response bytes.
                data = new Byte[256];

                // String to sbtore the response ASCII representation.
                String responseData = String.Empty;

                // Read the first batch of the TcpServer response bytes.
                Int32 bytes = stream.Read(data, 0, data.Length);
                responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
               txtConversation.AppendText( string.Format("\r\nReceived: {0}", responseData));

                // Close everything.
                stream.Close();
                client.Close();
            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine("ArgumentNullException: {0}", e);
            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException: {0}", e);
            }

            Console.WriteLine("\n Press Enter to continue...");
            Console.Read();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            MessageData info = new MessageData();
            info.Code = "Msg";
            info.Message = txtMessage.Text;
           


            this.Connect("127.0.0.1", info);
        }

        private void button2_Click(object sender, EventArgs e)
        {

            MessageData info = new MessageData();
            MessageData info2 = new MessageData();
            info.Code = "Msg";
            info.Message = "Hello World";

            Byte[] data = MessageData.ToByteArray(info);

            info2= MessageData.ByteArrayToObject(data);

             

        }

    }

}
